﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WCS.Infrastructure.Dto.Request.Epaylinks
{
    /// <summary>
    /// 商户侧受理的终端信息
    /// </summary>
    public class EpaylinksTerminalInfo
    {
        /// <summary>
        /// 终端实时经纬度信息，格式为：纬度/经度，+表示北纬、东经，-表示南纬、西经。
        /// 纬度和经度（包含正负符号和小数点）长度均不能超过 10，示例：+37.12/+123.45678。
        /// </summary>
        [Required]
        [MaxLength(21)]
        public string Location { get; set; }

        /// <summary>
        /// 终端入网认证编号，该编号由“中国银联标识产品企业资质认证办公室”为通过入网认证的终端进行分配。
        /// 银联直连终端必填，格式：5 位字符，例如 P3100。
        /// </summary>
        [MaxLength(5)]
        public string NetworkLicense { get; set; }

        /// <summary>
        /// 设备类型，详见附录“终端类型”表，各终端定义见附录“终端定义”表。
        /// </summary>
        [Required]
        [MaxLength(2)]
        public string TerminalType { get; set; }

        /// <summary>
        /// 终端序列号，终端设备的硬件序列号，当终端类型填写为 00、06、11、15、18、19、20、24 时，必须填写。
        /// </summary>
        [MaxLength(50)]
        public string SerialNum { get; set; }

        /// <summary>
        /// 终端设备号，终端设备编号，收单机构为商户终端分配的唯一编号。
        /// </summary>
        [Required]
        [MaxLength(8)]
        public string TerminalId { get; set; }

        /// <summary>
        /// 加密随机因子，仅在被扫支付类交易报文中出现：若付款码为 19 位数字，则取后 6 位；
        /// 若付款码码为 EMV 二维码，则取其 tag；57 的卡号/token 号的后 6 位。
        /// </summary>
        [MaxLength(10)]
        public string EncryptRandNum { get; set; }

        /// <summary>
        /// 密文数据，仅在被扫支付类交易报文中出现：64bit 的密文数据，对终端硬件序列号和加密随机因子加密后的结果。
        /// 本子域取值为：64bit 密文数据进行 base64 编码后的结果。
        /// </summary>
        [MaxLength(16)]
        public string SecretText { get; set; }

        /// <summary>
        /// 应用程序版本号，终端应用程序的版本号。应用程序变更应保证版本号不重复。当长度不足时，右补空格。
        /// </summary>
        [MaxLength(8)]
        public string AppVersion { get; set; }

        /// <summary>
        /// 商户端设备 IP 地址，如经、纬度信息未上送，该字段必送。
        /// </summary>
        [MaxLength(40)]
        public string TerminalIp { get; set; }

        /// <summary>
        /// 移动国家代码，基站信息，移动国家代码，由国际电联(ITU) 统一分配的移动国家代码（MCC）。中国为 460。
        /// </summary>
        [MaxLength(3)]
        public string MobileCountryCd { get; set; }

        /// <summary>
        /// 移动网络号码，基站信息，移动网络号码，由国际电联(ITU) 统一分配的移动网络号码（MNC）。
        /// 移动：00、02、04、07；联通：01、06、09；电信：03、05、11。
        /// </summary>
        [MaxLength(2)]
        public string MobileNetNum { get; set; }

        /// <summary>
        /// ICCID，SIM 卡卡号。
        /// </summary>
        [MaxLength(20)]
        public string IccId { get; set; }

        /// <summary>
        /// 位置区域码 1，LAC(移动、联通)，16 进制。
        /// </summary>
        [MaxLength(4)]
        public string LocationCd1 { get; set; }

        /// <summary>
        /// 基站编号 1，CID(移动、联通)，16 进制。
        /// </summary>
        [MaxLength(12)]
        public string LbsNum1 { get; set; }

        /// <summary>
        /// 基站信号 1，SIG(移动、联通)，16 进制。
        /// </summary>
        [MaxLength(4)]
        public string LbsSignal1 { get; set; }

        /// <summary>
        /// 位置区域码 2，LAC(移动、联通)，16 进制。
        /// </summary>
        [MaxLength(4)]
        public string LocationCd2 { get; set; }

        /// <summary>
        /// 基站编号 2，CID(移动、联通)，16 进制。
        /// </summary>
        [MaxLength(12)]
        public string LbsNum2 { get; set; }

        /// <summary>
        /// 基站信号 2，SIG(移动、联通)，16 进制。
        /// </summary>
        [MaxLength(4)]
        public string LbsSignal2 { get; set; }

        /// <summary>
        /// 位置区域码 3，LAC(移动、联通)，16 进制。
        /// </summary>
        [MaxLength(4)]
        public string LocationCd3 { get; set; }

        /// <summary>
        /// 基站编号 3，CID(移动、联通)，16 进制。
        /// </summary>
        [MaxLength(12)]
        public string LbsNum3 { get; set; }

        /// <summary>
        /// 基站信号 3，SIG(移动、联通)，16 进制。
        /// </summary>
        [MaxLength(4)]
        public string LbsSignal3 { get; set; }

        /// <summary>
        /// 电信系统识别码，SID（电信），电信系统识别码,每个地级市只有一个 SID。
        /// </summary>
        [MaxLength(4)]
        public string TelecomSysId { get; set; }

        /// <summary>
        /// 电信网络识别码，NID（电信），电信网络识别码,由电信各由地级分公司分配。每个地级市可能有 1 到 3 个 NID。
        /// </summary>
        [MaxLength(4)]
        public string TelecomNetId { get; set; }

        /// <summary>
        /// 电信基站，BID（电信），电信网络中的小区识别码，等效于基站。
        /// </summary>
        [MaxLength(4)]
        public string TelecomLbs { get; set; }

        /// <summary>
        /// 电信基站信号，SIG（电信），16 进制。
        /// </summary>
        [MaxLength(4)]
        public string TelecomLbsSignal { get; set; }
    }
}
